/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ms.jasim.model.impl;

import ms.jasim.framework.IJasimAppContext;
import ms.jasim.framework.IValueProvider;
import ms.jasim.framework.SolutionSimulator.SimulatorArg;
import ms.jasim.model.Actor;
import ms.jasim.model.ActorList;
import ms.jasim.model.Capacity;
import ms.jasim.model.CustomizableObject;
import ms.jasim.model.DecomposeType;
import ms.jasim.model.Decomposition;
import ms.jasim.model.Evaluator;
import ms.jasim.model.EvaluatorList;
import ms.jasim.model.Goal;
import ms.jasim.model.GoalList;
import ms.jasim.model.GoalRequest;
import ms.jasim.model.JasimModel;
import ms.jasim.model.JasimTemplate;
import ms.jasim.model.ModelFactory;
import ms.jasim.model.ModelObject;
import ms.jasim.model.ModelPackage;
import ms.jasim.model.NamedModelObject;
import ms.jasim.model.event.EventPackage;
import ms.jasim.model.event.impl.EventPackageImpl;
import ms.jasim.model.items.ItemsPackage;
import ms.jasim.model.items.impl.ItemsPackageImpl;
import ms.jasim.pddl.PddlPredicate;
import ms.utils.INamedItem;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EGenericType;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ModelPackageImpl extends EPackageImpl implements ModelPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass modelObjectEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass namedModelObjectEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass jasimModelEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass jasimTemplateEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass customizableObjectEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass actorEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass goalEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass goalRequestEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass decompositionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass capacityEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass evaluatorEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass actorListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass goalListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass evaluatorListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iActorListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iGoalListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iItemListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iEvaluatorListEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iNamedItemEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iValueProviderEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum decomposeTypeEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType uriEDataType = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType simulatorArgEDataType = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType jasimAppContextEDataType = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType pddlPredicateEDataType = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see ms.jasim.model.ModelPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private ModelPackageImpl() {
		super(eNS_URI, ModelFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link ModelPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static ModelPackage init() {
		if (isInited) return (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);

		// Obtain or create and register package
		ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ModelPackageImpl());

		isInited = true;

		// Obtain or create and register interdependencies
		ItemsPackageImpl theItemsPackage = (ItemsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ItemsPackage.eNS_URI) instanceof ItemsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ItemsPackage.eNS_URI) : ItemsPackage.eINSTANCE);
		EventPackageImpl theEventPackage = (EventPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(EventPackage.eNS_URI) instanceof EventPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(EventPackage.eNS_URI) : EventPackage.eINSTANCE);

		// Create package meta-data objects
		theModelPackage.createPackageContents();
		theItemsPackage.createPackageContents();
		theEventPackage.createPackageContents();

		// Initialize created meta-data
		theModelPackage.initializePackageContents();
		theItemsPackage.initializePackageContents();
		theEventPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theModelPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(ModelPackage.eNS_URI, theModelPackage);
		return theModelPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getModelObject() {
		return modelObjectEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getModelObject_Predefined() {
		return (EAttribute)modelObjectEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getModelObject_Readonly() {
		return (EAttribute)modelObjectEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getNamedModelObject() {
		return namedModelObjectEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getNamedModelObject_Name() {
		return (EAttribute)namedModelObjectEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getNamedModelObject_ReservedName() {
		return (EAttribute)namedModelObjectEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getJasimModel() {
		return jasimModelEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getJasimModel_Title() {
		return (EAttribute)jasimModelEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getJasimModel_Metric() {
		return (EAttribute)jasimModelEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_Actors() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_Goals() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_Evaluators() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_Options() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_EventModel() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_DefaultActorProperties() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_DefaultGoalProperties() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_DefaultCapacityProperties() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_ActorDescriptors() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_GoalDescriptors() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimModel_CapacityDescriptors() {
		return (EReference)jasimModelEClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getJasimTemplate() {
		return jasimTemplateEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimTemplate_Evaluators() {
		return (EReference)jasimTemplateEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimTemplate_EventTemplate() {
		return (EReference)jasimTemplateEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimTemplate_ActorDescriptors() {
		return (EReference)jasimTemplateEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimTemplate_GoalDescriptors() {
		return (EReference)jasimTemplateEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getJasimTemplate_CapacityDescriptors() {
		return (EReference)jasimTemplateEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getCustomizableObject() {
		return customizableObjectEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getCustomizableObject_Text() {
		return (EAttribute)customizableObjectEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCustomizableObject_Properties() {
		return (EReference)customizableObjectEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getActor() {
		return actorEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getActor_Capacity() {
		return (EReference)actorEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getActor_Requests() {
		return (EReference)actorEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGoal() {
		return goalEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGoal_Decomposition() {
		return (EReference)goalEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGoal_Precedence() {
		return (EReference)goalEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGoalRequest() {
		return goalRequestEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getGoalRequest_SharedInstance() {
		return (EAttribute)goalRequestEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGoalRequest_Goal() {
		return (EReference)goalRequestEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDecomposition() {
		return decompositionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDecomposition_Text() {
		return (EAttribute)decompositionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDecomposition_Type() {
		return (EAttribute)decompositionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDecomposition_SubGoals() {
		return (EReference)decompositionEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getCapacity() {
		return capacityEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCapacity_Goal() {
		return (EReference)capacityEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEvaluator() {
		return evaluatorEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvaluator_Class() {
		return (EAttribute)evaluatorEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvaluator_Text() {
		return (EAttribute)evaluatorEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEvaluator_Parameter() {
		return (EReference)evaluatorEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getEvaluator_Label() {
		return (EAttribute)evaluatorEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getActorList() {
		return actorListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getActorList_Actor() {
		return (EReference)actorListEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getGoalList() {
		return goalListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getGoalList_Goal() {
		return (EReference)goalListEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getEvaluatorList() {
		return evaluatorListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getEvaluatorList_Item() {
		return (EReference)evaluatorListEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIActorList() {
		return iActorListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIGoalList() {
		return iGoalListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIItemList() {
		return iItemListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIEvaluatorList() {
		return iEvaluatorListEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getURI() {
		return uriEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getSimulatorArg() {
		return simulatorArgEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getJasimAppContext() {
		return jasimAppContextEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getPddlPredicate() {
		return pddlPredicateEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getINamedItem() {
		return iNamedItemEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIValueProvider() {
		return iValueProviderEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getDecomposeType() {
		return decomposeTypeEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ModelFactory getModelFactory() {
		return (ModelFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		modelObjectEClass = createEClass(MODEL_OBJECT);
		createEAttribute(modelObjectEClass, MODEL_OBJECT__PREDEFINED);
		createEAttribute(modelObjectEClass, MODEL_OBJECT__READONLY);

		namedModelObjectEClass = createEClass(NAMED_MODEL_OBJECT);
		createEAttribute(namedModelObjectEClass, NAMED_MODEL_OBJECT__NAME);
		createEAttribute(namedModelObjectEClass, NAMED_MODEL_OBJECT__RESERVED_NAME);

		jasimModelEClass = createEClass(JASIM_MODEL);
		createEAttribute(jasimModelEClass, JASIM_MODEL__TITLE);
		createEAttribute(jasimModelEClass, JASIM_MODEL__METRIC);
		createEReference(jasimModelEClass, JASIM_MODEL__ACTORS);
		createEReference(jasimModelEClass, JASIM_MODEL__GOALS);
		createEReference(jasimModelEClass, JASIM_MODEL__EVALUATORS);
		createEReference(jasimModelEClass, JASIM_MODEL__OPTIONS);
		createEReference(jasimModelEClass, JASIM_MODEL__EVENT_MODEL);
		createEReference(jasimModelEClass, JASIM_MODEL__DEFAULT_ACTOR_PROPERTIES);
		createEReference(jasimModelEClass, JASIM_MODEL__DEFAULT_GOAL_PROPERTIES);
		createEReference(jasimModelEClass, JASIM_MODEL__DEFAULT_CAPACITY_PROPERTIES);
		createEReference(jasimModelEClass, JASIM_MODEL__ACTOR_DESCRIPTORS);
		createEReference(jasimModelEClass, JASIM_MODEL__GOAL_DESCRIPTORS);
		createEReference(jasimModelEClass, JASIM_MODEL__CAPACITY_DESCRIPTORS);

		jasimTemplateEClass = createEClass(JASIM_TEMPLATE);
		createEReference(jasimTemplateEClass, JASIM_TEMPLATE__EVALUATORS);
		createEReference(jasimTemplateEClass, JASIM_TEMPLATE__EVENT_TEMPLATE);
		createEReference(jasimTemplateEClass, JASIM_TEMPLATE__ACTOR_DESCRIPTORS);
		createEReference(jasimTemplateEClass, JASIM_TEMPLATE__GOAL_DESCRIPTORS);
		createEReference(jasimTemplateEClass, JASIM_TEMPLATE__CAPACITY_DESCRIPTORS);

		customizableObjectEClass = createEClass(CUSTOMIZABLE_OBJECT);
		createEAttribute(customizableObjectEClass, CUSTOMIZABLE_OBJECT__TEXT);
		createEReference(customizableObjectEClass, CUSTOMIZABLE_OBJECT__PROPERTIES);

		actorEClass = createEClass(ACTOR);
		createEReference(actorEClass, ACTOR__CAPACITY);
		createEReference(actorEClass, ACTOR__REQUESTS);

		goalEClass = createEClass(GOAL);
		createEReference(goalEClass, GOAL__DECOMPOSITION);
		createEReference(goalEClass, GOAL__PRECEDENCE);

		goalRequestEClass = createEClass(GOAL_REQUEST);
		createEAttribute(goalRequestEClass, GOAL_REQUEST__SHARED_INSTANCE);
		createEReference(goalRequestEClass, GOAL_REQUEST__GOAL);

		decompositionEClass = createEClass(DECOMPOSITION);
		createEAttribute(decompositionEClass, DECOMPOSITION__TEXT);
		createEAttribute(decompositionEClass, DECOMPOSITION__TYPE);
		createEReference(decompositionEClass, DECOMPOSITION__SUB_GOALS);

		capacityEClass = createEClass(CAPACITY);
		createEReference(capacityEClass, CAPACITY__GOAL);

		evaluatorListEClass = createEClass(EVALUATOR_LIST);
		createEReference(evaluatorListEClass, EVALUATOR_LIST__ITEM);

		evaluatorEClass = createEClass(EVALUATOR);
		createEAttribute(evaluatorEClass, EVALUATOR__CLASS);
		createEAttribute(evaluatorEClass, EVALUATOR__TEXT);
		createEReference(evaluatorEClass, EVALUATOR__PARAMETER);
		createEAttribute(evaluatorEClass, EVALUATOR__LABEL);

		actorListEClass = createEClass(ACTOR_LIST);
		createEReference(actorListEClass, ACTOR_LIST__ACTOR);

		goalListEClass = createEClass(GOAL_LIST);
		createEReference(goalListEClass, GOAL_LIST__GOAL);

		iActorListEClass = createEClass(IACTOR_LIST);

		iGoalListEClass = createEClass(IGOAL_LIST);

		iItemListEClass = createEClass(IITEM_LIST);

		iEvaluatorListEClass = createEClass(IEVALUATOR_LIST);

		iNamedItemEClass = createEClass(INAMED_ITEM);

		iValueProviderEClass = createEClass(IVALUE_PROVIDER);

		// Create enums
		decomposeTypeEEnum = createEEnum(DECOMPOSE_TYPE);

		// Create data types
		jasimAppContextEDataType = createEDataType(JASIM_APP_CONTEXT);
		pddlPredicateEDataType = createEDataType(PDDL_PREDICATE);
		uriEDataType = createEDataType(URI);
		simulatorArgEDataType = createEDataType(SIMULATOR_ARG);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		ItemsPackage theItemsPackage = (ItemsPackage)EPackage.Registry.INSTANCE.getEPackage(ItemsPackage.eNS_URI);
		EventPackage theEventPackage = (EventPackage)EPackage.Registry.INSTANCE.getEPackage(EventPackage.eNS_URI);

		// Add subpackages
		getESubpackages().add(theItemsPackage);
		getESubpackages().add(theEventPackage);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		namedModelObjectEClass.getESuperTypes().add(this.getModelObject());
		namedModelObjectEClass.getESuperTypes().add(this.getINamedItem());
		jasimModelEClass.getESuperTypes().add(this.getModelObject());
		jasimTemplateEClass.getESuperTypes().add(this.getNamedModelObject());
		customizableObjectEClass.getESuperTypes().add(this.getNamedModelObject());
		actorEClass.getESuperTypes().add(this.getCustomizableObject());
		goalEClass.getESuperTypes().add(this.getCustomizableObject());
		goalRequestEClass.getESuperTypes().add(this.getModelObject());
		decompositionEClass.getESuperTypes().add(this.getModelObject());
		capacityEClass.getESuperTypes().add(this.getCustomizableObject());
		evaluatorListEClass.getESuperTypes().add(this.getIEvaluatorList());
		evaluatorEClass.getESuperTypes().add(this.getNamedModelObject());
		actorListEClass.getESuperTypes().add(this.getIActorList());
		goalListEClass.getESuperTypes().add(this.getIGoalList());

		// Initialize classes and features; add operations and parameters
		initEClass(modelObjectEClass, ModelObject.class, "ModelObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getModelObject_Predefined(), ecorePackage.getEBoolean(), "Predefined", null, 0, 1, ModelObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getModelObject_Readonly(), ecorePackage.getEBoolean(), "Readonly", null, 0, 1, ModelObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		addEOperation(modelObjectEClass, ecorePackage.getEBoolean(), "isTemplateObject", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(namedModelObjectEClass, NamedModelObject.class, "NamedModelObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getNamedModelObject_Name(), ecorePackage.getEString(), "Name", null, 0, 1, NamedModelObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getNamedModelObject_ReservedName(), ecorePackage.getEBoolean(), "ReservedName", null, 0, 1, NamedModelObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(jasimModelEClass, JasimModel.class, "JasimModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getJasimModel_Title(), ecorePackage.getEString(), "Title", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getJasimModel_Metric(), ecorePackage.getEString(), "Metric", "maximize (rt_plan_quality)", 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_Actors(), this.getActorList(), null, "actors", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_Goals(), this.getGoalList(), null, "goals", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_Evaluators(), this.getEvaluatorList(), null, "evaluators", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_Options(), theItemsPackage.getItemList(), null, "options", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_EventModel(), theEventPackage.getEventModel(), null, "eventModel", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_DefaultActorProperties(), theItemsPackage.getPropertyList(), null, "defaultActorProperties", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_DefaultGoalProperties(), theItemsPackage.getPropertyList(), null, "defaultGoalProperties", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_DefaultCapacityProperties(), theItemsPackage.getPropertyList(), null, "defaultCapacityProperties", null, 0, 1, JasimModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_ActorDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "actorDescriptors", null, 0, 1, JasimModel.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_GoalDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "goalDescriptors", null, 0, 1, JasimModel.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimModel_CapacityDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "capacityDescriptors", null, 0, 1, JasimModel.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		addEOperation(jasimModelEClass, this.getURI(), "getURI", 0, 1, IS_UNIQUE, IS_ORDERED);

		EOperation op = addEOperation(jasimModelEClass, null, "setURI", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED);

		op = addEOperation(jasimModelEClass, theItemsPackage.getPropertyDescriptor(), "findPropertyDescriptor", 0, 1, IS_UNIQUE, IS_ORDERED);
		EGenericType g1 = createEGenericType(ecorePackage.getEJavaClass());
		EGenericType g2 = createEGenericType();
		g1.getETypeArguments().add(g2);
		addEParameter(op, g1, "clazz", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, ecorePackage.getEString(), "nameOrPddlFunction", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(jasimTemplateEClass, JasimTemplate.class, "JasimTemplate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getJasimTemplate_Evaluators(), this.getEvaluatorList(), null, "evaluators", null, 0, 1, JasimTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimTemplate_EventTemplate(), theEventPackage.getEventSet(), null, "eventTemplate", null, 0, 1, JasimTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimTemplate_ActorDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "actorDescriptors", null, 0, 1, JasimTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimTemplate_GoalDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "goalDescriptors", null, 0, 1, JasimTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getJasimTemplate_CapacityDescriptors(), theItemsPackage.getPropertyDescriptorList(), null, "capacityDescriptors", null, 0, 1, JasimTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(customizableObjectEClass, CustomizableObject.class, "CustomizableObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getCustomizableObject_Text(), ecorePackage.getEString(), "Text", null, 0, 1, CustomizableObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCustomizableObject_Properties(), theItemsPackage.getPropertyList(), null, "properties", null, 0, 1, CustomizableObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		op = addEOperation(customizableObjectEClass, theItemsPackage.getItem(), "resolveProperty", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, theItemsPackage.getPropertyDescriptor(), "descriptor", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(actorEClass, Actor.class, "Actor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getActor_Capacity(), this.getCapacity(), null, "capacity", null, 0, -1, Actor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getActor_Requests(), this.getGoalRequest(), null, "requests", null, 0, -1, Actor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		op = addEOperation(actorEClass, this.getCapacity(), "findCapacity", 0, 1, IS_UNIQUE, IS_ORDERED);
		addEParameter(op, this.getGoal(), "goal", 0, 1, IS_UNIQUE, IS_ORDERED);

		initEClass(goalEClass, Goal.class, "Goal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGoal_Decomposition(), this.getDecomposition(), null, "decomposition", null, 0, -1, Goal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGoal_Precedence(), this.getGoal(), null, "precedence", null, 0, -1, Goal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(goalRequestEClass, GoalRequest.class, "GoalRequest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getGoalRequest_SharedInstance(), ecorePackage.getEBoolean(), "sharedInstance", "false", 0, 1, GoalRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getGoalRequest_Goal(), this.getGoal(), null, "goal", null, 0, 1, GoalRequest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(decompositionEClass, Decomposition.class, "Decomposition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDecomposition_Text(), ecorePackage.getEString(), "Text", null, 0, 1, Decomposition.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEAttribute(getDecomposition_Type(), this.getDecomposeType(), "Type", null, 0, 1, Decomposition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDecomposition_SubGoals(), this.getGoal(), null, "subGoals", null, 0, -1, Decomposition.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(capacityEClass, Capacity.class, "Capacity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCapacity_Goal(), this.getGoal(), null, "goal", null, 1, 1, Capacity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(evaluatorListEClass, EvaluatorList.class, "EvaluatorList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getEvaluatorList_Item(), this.getEvaluator(), null, "item", null, 0, -1, EvaluatorList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(evaluatorEClass, Evaluator.class, "Evaluator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getEvaluator_Class(), ecorePackage.getEString(), "Class", null, 0, 1, Evaluator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEvaluator_Text(), ecorePackage.getEString(), "Text", null, 0, 1, Evaluator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getEvaluator_Parameter(), theItemsPackage.getItemList(), null, "parameter", null, 0, 1, Evaluator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getEvaluator_Label(), ecorePackage.getEString(), "Label", null, 0, 1, Evaluator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(actorListEClass, ActorList.class, "ActorList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getActorList_Actor(), this.getActor(), null, "actor", null, 0, -1, ActorList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(goalListEClass, GoalList.class, "GoalList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getGoalList_Goal(), this.getGoal(), null, "goal", null, 0, -1, GoalList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(iActorListEClass, Object.class, "IActorList", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS, "IModelObjectList<Actor>");

		initEClass(iGoalListEClass, Object.class, "IGoalList", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS, "IModelObjectList<Goal>");

		initEClass(iItemListEClass, Object.class, "IItemList", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS, "IModelObjectList<Item>");

		initEClass(iEvaluatorListEClass, Object.class, "IEvaluatorList", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS, "IModelObjectList<Evaluator>");

		initEClass(iNamedItemEClass, INamedItem.class, "INamedItem", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

		initEClass(iValueProviderEClass, IValueProvider.class, "IValueProvider", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);

		// Initialize enums and add enum literals
		initEEnum(decomposeTypeEEnum, DecomposeType.class, "DecomposeType");
		addEEnumLiteral(decomposeTypeEEnum, DecomposeType.AND);
		addEEnumLiteral(decomposeTypeEEnum, DecomposeType.OR);

		// Initialize data types
		initEDataType(jasimAppContextEDataType, IJasimAppContext.class, "JasimAppContext", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
		initEDataType(pddlPredicateEDataType, PddlPredicate.class, "PddlPredicate", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
		initEDataType(uriEDataType, org.eclipse.emf.common.util.URI.class, "URI", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
		initEDataType(simulatorArgEDataType, SimulatorArg.class, "SimulatorArg", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);

		// Create resource
		createResource(eNS_URI);
	}

} //ModelPackageImpl
